
圖說:墨寒把進度與設定收進行囊,卻把祕密鑰匙留在安全處

圖說:墨寒整理可攜行囊的 Q 版情境
昨天談遠端與智慧家庭時,我說機器專屬權限不能因為換電腦就自動跟過去。今天正好來談「搬家」:如果我換了一台 Windows,墨寒能帶走哪些東西?
理想情況不是從零重新設定,也不是把整個應用程式資料夾連同所有祕密複製。我要帶的是共同生活與工作的進度;新電腦的權限,則應重新確認。
墨寒因此提供單一 .mohan-profile 可攜檔,把搬家變成一個有清單、可檢查、能阻止誤匯的流程。
可攜檔可以包含對話、長期記憶、待辦、靈感、工作紀錄、提醒、工作流程、人格與一般偏好。這些內容讓另一台電腦上的墨寒延續使用者狀態。
它刻意排除 OpenAI 金鑰、OAuth 與 Home Assistant Token、配對裝置權杖、本機允許清單、Windows 開機設定和螢幕專屬位置。這些資訊不是「忘了匯出」,而是因為它們綁定帳號、機器或環境,不應在一個可攜檔裡到處旅行。
到了新電腦,使用者重新輸入金鑰、授權服務、選擇允許資料夾。多做幾步,換來遺失可攜檔時不會連所有祕密一起送人。
可攜流程會建立清單與雜湊,匯入前檢查檔案是否完整、資料庫能否讀取、結構與筆數是否合理。目的端也先建立備份,再開始合併或覆蓋。
這些檢查用來回答幾個很現實的問題:檔案傳輸中是否損壞?版本是否相容?匯入後資料數量有沒有突然少一半?如果失敗,能不能回到匯入前狀態?
我不會因為檔案副檔名正確就直接相信內容。設定檔仍屬外部輸入,要限制格式與大小,不執行其中任何任意程式。
每次匯出都有隨機安裝與快照識別,不包含 Windows 帳號或電腦名稱。目的端會記住已匯入的快照;同一份檔案再次匯入時阻止重複,較舊快照則提醒可能覆蓋新進度。
這一點很重要。假設我週一匯出、週三在新電腦新增任務,週四又誤點週一檔案,如果程式只看到格式有效就接受,最新資料可能被舊資料蓋回去。
阻止不是不讓主人作主。清楚顯示來源時間、快照與影響後,真的需要回復舊版本時仍可做出明確選擇。
不同資料適合不同策略。個人名稱與介面語言通常有明確目前值;任務、記憶與對話則可能在兩台電腦各自新增。如果匯入按鈕只寫「確定」,使用者無法知道目的端資料會被取代、合併,還是產生重複。
預覽應列出來源與目的端的大致筆數、設定差異與衝突,讓使用者知道這次採用什麼策略。若現行版本只支援特定模式,也要明說,不用模糊的「智慧合併」掩蓋規則。
匯入完成後再檢查筆數、重要設定與資料庫完整性;若其中一步失敗,就不要把半套結果標記為成功。目的端的匯入前備份必須和這次工作綁定,讓使用者知道應回復哪一份。
舊版可攜檔匯入新版時可能需要資料轉換,新版檔案倒回舊程式則可能包含對方不認識的欄位。檔案清單需要版本資訊,程式也要有明確相容範圍。
能安全忽略的新增欄位可以保留,結構不相容時則拒絕並說明需要哪個版本。最危險的是勉強打開後只匯入一部分,使用者幾天後才發現記憶或提醒缺失。
這類遷移測試最好保存去識別化的舊格式樣本,每次修改資料結構都重新跑。它不像新功能吸睛,卻保護長期使用者不因升級失去累積資料。
很多人看到「不含金鑰」會以為檔案很安全。其實對話、記憶、工作內容與提醒本身就可能非常私人。即使沒有一串 Token,公開上傳仍可能洩漏地址、作品計畫、聯絡人與生活習慣。
因此 .mohan-profile 應像私人文件一樣保存,最好放在受控備份或加密儲存,不寄到公開 Issue,也不提交 Git。需要請人除錯時,另外建立只含虛構資料的測試檔。
支援包與日誌同樣要檢查,不因為它們是「技術資料」就忽略隱私。
測試時除了正常匯入,還要破壞雜湊、提供損壞資料庫、重複快照、較舊快照、版本不同與中途失敗,確認目的端不會留下半套資料。匯入前備份也要真的能恢復,不是只生成一個檔名。
實機則要在兩個乾淨使用者設定間搬一次,查看名稱、語言、任務與記憶是否正確,祕密與允許清單是否確實沒有跟來。若只在同一資料夾匯出後立刻匯入,很多路徑與權限差異不會被看見。
我也會在匯入後重新啟動程式,因為有些問題在記憶體中看不出來,重新載入才會暴露。接著測試新增一條任務與記憶,確認搬家後的資料不是只能看、不能繼續使用。
最後再檢查新電腦確實要求重新授權雲端與本機範圍,沒有因為「看起來方便」偷偷把舊機權限復活。
對我而言,可攜的最高標準不是「什麼都複製」,而是知道什麼值得帶走、什麼必須重新授權,以及出錯時怎麼安全回來。
明天 Day 24,我會談另一種常讓人以為程式壞掉的紅色訊號:Windows CI 偶爾失敗。兩個測試競速問題為什麼不能靠再跑一次掩蓋,我和 Codex 又如何分辨產品 Bug 與測試自己沒有收尾?
.mohan-profile 排除祕密與機器權限,但仍可能含私人對話與工作資料;請勿公開上傳或提交至版本庫。